//路由鉴权：鉴权，项目中路由能不能被访问的权限的设置
import router from './index.ts'
import customSetting from "../custom-setting.ts";
import LayoutStore from "../store/modules/setting.ts";
import UserUserStore from '../store/modules/user.ts';
import pinia from '@/store'
import {getToken} from "../utils/tokenUtils.ts";
const layoutStore = new LayoutStore(pinia)
const userStore = new UserUserStore(pinia)
//全局守卫：项目当中任意路由切换都会触发的钩子
//全局前置守卫
router.beforeEach(async (to:any,from:any,next:any)=>{
    if (to.path === '/login') next()
    // if (to.path === '/test') next()
    else {
        if (getToken()) {
            if (userStore.userInfo.id == null) {
                console.log('before')
                try {
                    const res = await userStore.getInfo()
                    if (res?.code != 200) {
                        await router.push('/login')
                    }
                } catch (e) {
                    router.push('/login')
                }
            }
            next()
        }else {
            await router.push('/login')
        }
    }
    document.title = `${customSetting.title} - ${to.meta.title}`
    layoutStore.setLoading(true)
    next()
    //to:可以获取到要跳转到哪个路由信息
    //from:可以获取到从哪个路由而来的信息
    //next:放行函数，调用放行函数，路由才能真正跳转
})

router.afterEach(()=>{
    //to:可以获取到要跳转到哪个路由信息
    //from:可以获取到从哪个路由而来的信息
    //next:放行函数，调用放行函数，路由才能真正跳转
    setTimeout(()=>{
        layoutStore.setLoading(false)
    },0)
    //next()
})
//用户未登录：可以访问login，其余六个路由不能访问（指向login）
//用户登陆成功：不可以访问login【指向首页】，其余的路由可以访问
